fn bigger(a: i32, b: i32) -> i32 {
if (a > b) {
a
} else { // 괄호 꼭 필요하다
b
}
}
// else if
이렇게 대입도 할 수 있다.
// 같은 타입에 대해 아래처럼. 삼항 연산자?
let n = if 10 < 100 {
10
} else {
100
};
'a: loop {
println!("loop a");
'b: loop {
break 'a // 끝
}
continue 'a // a 시작으로
}
while n == 10 {
n = n - 1;
}
let a = vec![10,20,30,40,50];
// for each
for i in a {
println!("i: {}", i);
}
// exclusive range .. , inclusive is ..=
for i in 1..101 {
// 1 to 100
}
for _ in 0..=3 {
println!("no need no nubmer");
}
let x = 5;
match x {
1 => println!("one"),
2 => println!("two"),
3 | 4 | 5 => println!("three, four, five"),
13 ... 19 => println!("teen"), // iterate match
_ => println!("Else"),
}
// tuple
let pair = (0,-2);
match pair {
(0, y) => println!("y: {}", y),
(x, 0) => println!("x: {}", x),
(x, y) if x == y => println!("equals"),
_ => println!("nuhuh"),
}
// copy와 비슷, match하면 n으로 binding
// 이런식으로 값을 정의할수도있다.
let p = 5;
match p {
n @ 1 ... 12 => println!("n: {}", n),
n @ 13 ... 19 => println!("n: {}", n),
_ => println!("none"),
}
// match 는 하나만.
fn match_colors(rgb: (u8, u8, u8)) {
match rgb {
(r, _, _) if r < 10 => println!("not much red"),
(_, g, _) if g < 10 => println!("not much green"),
(_, _, b) if b < 10 => println!("not much blue"),
_ => println!("any color")
}
}
fn match_num(input: i32) {
match input {
number @ 0..=10 => println!("0~10: {}", number),
_ => println!("other num")
}
}
fn main() {
// 이거 아니면 이거 할때 type이 달라지면? 안됨
let a = 8;
let b = if a == 10 { 8 } else { "Wrong" };
}